﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using VentaElectrodomesticos.Login;
using VentaElectrodomesticos.AbmEmpleado;
using VentaElectrodomesticos.AbmRol;
using VentaElectrodomesticos.AbmUsuario;
using VentaElectrodomesticos.AbmCliente;
using VentaElectrodomesticos.AbmProducto;
using VentaElectrodomesticos.AsignacionStock;
using VentaElectrodomesticos.Facturacion;
using VentaElectrodomesticos.EfectuarPago;
using VentaElectrodomesticos.TableroControl;
using VentaElectrodomesticos.ClientesPremium;
using VentaElectrodomesticos.MejoresCategorias;
using VentaElectrodomesticos.Sql;
using System.Data.SqlClient;

namespace VentaElectrodomesticos
{
    public partial class FormPrincipal : Form
    {
        private String idUsuario;
        private unUsuario usuario;
        private ClaseSQL sql,sql2;
        private String[] permisos;

        public FormPrincipal()
        {
            InitializeComponent();
            sql = new ClaseSQL();
            sql2 = new ClaseSQL();
            this.permisos = new String[11];
            FormLogin login = new FormLogin(this);
            login.DialogResult = DialogResult.Yes;
            login.ShowDialog(this);
            this.filtrarMenu();
        }

        private void filtrarMenu() {
            try
            {
                sql.Open();
                SqlDataReader reader = sql.busquedaSQLDataReader("SELECT idRol FROM LAG.usuarios_roles WHERE idUsuario = " + this.idUsuario);
                SqlDataReader readRol;
                while (reader.Read()) {
                    String rol = reader[0].ToString();
                    sql2.Open();
                    readRol = sql2.busquedaSQLDataReader("SELECT idFuncionalidad FROM LAG.roles_funcionalidades WHERE idRol = " + rol);
                    while (readRol.Read()){
                        String funcionalidad = readRol[0].ToString();
                        switch (funcionalidad)
                        {
                            case "1": //ABM de Empleado
                                this.menuItemEmpleado.Visible = true;
                                break;
                            case "2": //ABM de Rol
                                this.menuItemRol.Visible = true;
                                break;
                            case "3": //ABM de Usuario
                                this.menuItemUsuario.Visible = true;
                                break;
                            case "4": //ABM de Cliente
                                this.menuItemCliente.Visible = true;
                                break;
                            case "5": //ABM de Producto
                                this.menuItemProducto.Visible = true;
                                break;
                            case "6": //Asignación de stock
                                this.menuItemStock.Visible = true;
                                break;
                            case "7": //Facturación
                                this.menuItemFacturacion.Visible = true;
                                break;
                            case "8": //Efectuar Pago
                                this.menuItemPago.Visible = true;
                                break;
                            case "9": //Tablero de Control
                                this.menuItemTablero.Visible = true;
                                break;
                            case "10": //Clientes Premium
                                this.menuItemClientesPremium.Visible = true;
                                break;
                            case "11": //Mejores Categorías
                                this.menuItemMejoresCategorias.Visible = true;
                                break;
                        }
                   }
                    sql2.Close();
                }
                
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message + "\n" + ex.StackTrace, "Error app");
                
            }
            finally
            {
                sql.Close();
            }
        }

        public void setUsuario(String id) {
            this.idUsuario = id;
        }

        public void setUsuario(unUsuario usuario)
        {
            this.usuario = usuario;
        }

        private void asignaciónDeStockToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormAsignacionStock form = new FormAsignacionStock(this.idUsuario);
            form.ShowDialog(this);
        }

        private void facturaciónToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormFacturacion form = new FormFacturacion(usuario);
            form.ShowDialog(this);
        }

        private void efectuarPagoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormEfectuarPago form = new FormEfectuarPago(this.idUsuario);
            form.ShowDialog(this);
        }

        private void tableroDeControlToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormTableroControl form = new FormTableroControl();
            form.ShowDialog(this);
        }

        private void clientesPremiumToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormClientesPremium form = new FormClientesPremium();
            form.ShowDialog(this);
        }

        private void mejoresCategoriasToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormMejoresCategorias form = new FormMejoresCategorias();
            form.ShowDialog(this);
        }

        private void MenuItemSalir(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void altaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormAltaUsuario formAlta = new FormAltaUsuario();
            formAlta.ShowDialog(this);
        }

        private void modificaciónToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormSeleccionUsuario formMod = new FormSeleccionUsuario();
            formMod.ShowDialog(this);
        }

        private void bajaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormBajaUsuario form = new FormBajaUsuario();
            form.ShowDialog(this);
        }

        private void altaToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            FormAltaRol formAltaRol = new FormAltaRol(null, false);
            formAltaRol.ShowDialog(this);
        }

        private void bajaToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            FormSeleccionRol formBajaRol = new FormSeleccionRol("baja",false);
            formBajaRol.ShowDialog(this);
        }

        private void modificaciónToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            FormSeleccionRol formModificacion = new FormSeleccionRol("modificacion", true);
            formModificacion.ShowDialog(this);
        }

        private void altaToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            FormAltaEmpleado formAlta = new FormAltaEmpleado();
            formAlta.ShowDialog(this);
        }

        private void bajaToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            FormBajaEmpleado formBaja = new FormBajaEmpleado();
            formBaja.ShowDialog(this);
        }

        private void modificaciónToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            FormModificarEmpleado formModificacion = new FormModificarEmpleado();
            formModificacion.ShowDialog(this);
        }

        private void altaToolStripMenuItem3_Click(object sender, EventArgs e)
        {
            FormAltaCliente formAltaUsuario = new FormAltaCliente();
            formAltaUsuario.ShowDialog(this);
        }

        private void modificaciónToolStripMenuItem3_Click(object sender, EventArgs e)
        {
            FormSeleccionCliente formModificacionCliente = new FormSeleccionCliente(null,"modificacion", true);
            formModificacionCliente.ShowDialog(this);
        }

        private void logoutToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Restart();
        }

        private void bajaToolStripMenuItem3_Click(object sender, EventArgs e)
        {
            FormSeleccionCliente formBajaCliente = new FormSeleccionCliente(null, "baja", false);
            formBajaCliente.ShowDialog(this);
        }

        private void altaDeProductoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormAltaProducto form = new FormAltaProducto();
            form.ShowDialog(this);
        }

        private void modificacionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormSeleccionProducto formModificacionProducto = new FormSeleccionProducto(null, "modificacion", true);
            formModificacionProducto.ShowDialog(this);
        }

        private void bajaToolStripMenuItem_Click_1(object sender, EventArgs e)
        {
            FormSeleccionProducto formBajaProducto = new FormSeleccionProducto(null, "baja", false);
            formBajaProducto.ShowDialog(this);
        }

    }
}
